/** layui-v2.0.2 MIT License By http://www.layui.com */
;layui.define([ "laytpl", "laypage", "layer", "form" ], function(e) {
	"use strict";
	var t = layui.$,
		i = layui.laytpl,
		a = layui.laypage,
		l = layui.layer,
		n = layui.form,
		d = layui.hint(),
		c = layui.device(),
		r = {
			config : {
				checkName : "LAY_CHECKED"
			},
			cache : {},
			index : layui.table ? layui.table.index + 1e4 : 0,
			set : function(e) {
				var i = this;
				return i.config = t.extend({}, i.config, e), i
			},
			on : function(e, t) {
				return layui.onevent.call(this, s, e, t)
			}
		},
		o = function() {
			var e = this;
			return {
				reload : function(t) {
					e.reload.call(e, t)
				},
				config : e.config
			}
		},
		s = "table",
		u = ".layui-table",
		f = "layui-hide",
		h = "layui-table-view",
		y = ".layui-table-header",
		p = ".layui-table-body",
		v = ".layui-table-main",
		m = ".layui-table-fixed",
		x = ".layui-table-fixed-l",
		b = ".layui-table-fixed-r",
		g = ".layui-table-tool",
		k = ".layui-table-sort",
		C = "layui-table-edit",
		w = "layui-table-hover",
		z = function(e) {
			return e = e || {}, [ '<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ', '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>', "<thead>", "{{# layui.each(d.data.cols, function(i1, item1){ }}", "<tr>", "{{# layui.each(item1, function(i2, item2){ }}", '{{# if(item2.fixed && item2.fixed !== "right"){ fixed = true; } }}', "{{# if(item2.fixed){ right = true; } }}", function() {
					return e.fixed && "right" !== e.fixed ? '{{# if(item2.fixed && item2.fixed !== "right"){ }}' : "right" === e.fixed ? '{{# if(item2.fixed === "right"){ }}' : ""
				}(), "{{# if(item2.checkbox){ }}", '<th data-field="{{ item2.field||i2 }}" data-type="checkbox" unresize="true"><div class="layui-table-cell laytable-cell-checkbox"><input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}></div></th>', "{{# } else if(item2.space){ }}", '<th data-field="{{ item2.field||i2 }}" unresize="true"><div class="layui-table-cell laytable-cell-space"></div></th>', "{{# } else { }}", '<th data-field="{{ item2.field||i2 }}" {{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}} {{# if(item2.unresize){ }}unresize="true"{{# } }}>', "{{# if(item2.colspan > 1){ }}", '<div class="layui-table-cell laytable-cell-group" {{#if(item2.align){}}align="{{item2.align}}"{{#}}}>', '<span>{{item2.title||""}}</span>', "</div>", "{{# } else { }}", '<div class="layui-table-cell laytable-cell-{{d.index}}-{{item2.field||i2}}" {{#if(item2.align){}}align="{{item2.align}}"{{#}}}>', '<span>{{item2.title||""}}</span>', "{{# if(item2.sort){ }}", '<span class="layui-table-sort layui-inline"><i class="layui-edge layui-table-sort-asc"></i><i class="layui-edge layui-table-sort-desc"></i></span>', "{{# } }}", "</div>", "{{# } }}", "</th>", "{{# }; }}", e.fixed ? "{{# }; }}" : "", "{{# }); }}", "</tr>", "{{# }); }}", "</thead>", "</table>" ].join("")
		},
		T = [ '<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ', '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>', "<tbody></tbody>", "</table>" ].join(""),
		A = [ '<div class="layui-form layui-border-box {{d.VIEW_CLASS}}" lay-filter="LAY-table-{{d.index}}" style="{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}">', "{{# var fixed, right; }}", '<div class="layui-table-header">', z(), "</div>", '<div class="layui-table-body layui-table-main">', T, "</div>", '{{# if(fixed && fixed !== "right"){ }}', '<div class="layui-table-fixed layui-table-fixed-l">', '<div class="layui-table-header">', z({
			fixed : !0
		}), "</div>", '<div class="layui-table-body">', T, "</div>", "</div>", "{{# }; }}", "{{# if(right){ }}", '<div class="layui-table-fixed layui-table-fixed-r">', '<div class="layui-table-header">', z({
			fixed : "right"
		}), '<div class="layui-table-mend"></div>', "</div>", '<div class="layui-table-body">', T, "</div>", "</div>", "{{# }; }}", "{{# if(d.data.page){ }}", '<div class="layui-table-tool">', '<div class="layui-inline layui-table-page" id="layui-table-page{{d.index}}"></div>', "</div>", "{{# } }}", "<style>", "{{# layui.each(d.data.cols, function(i1, item1){", "layui.each(item1, function(i2, item2){ }}", ".laytable-cell-{{d.index}}-{{item2.field||i2}}{ width:{{item2.width||50}}px }", "{{# });", "}); }}", "</style>", "</div>" ].join(""),
		D = t(window),
		F = t(document),
		j = function(e) {
			var i = this;
			i.index = ++r.index, i.config = t.extend({}, i.config, r.config, e), i.render()
		};
	j.prototype.config = {
		limit : 30,
		loading : !0
	}, j.prototype.render = function() {
		var e = this,
			a = e.config;
		if (a.elem = t(a.elem), a.where = a.where || {}, !a.elem[0]) return e;
		var l = a.elem,
			n = l.next("." + h),
			d = e.elem = t(i(A).render({
				VIEW_CLASS : h,
				data : a,
				index : e.index
			}));
		if (a.index = e.index, n[0] && n.remove(), l.after(d), e.layHeader = d.find(y), e.layMain = d.find(v), e.layBody = d.find(p), e.layFixed = d.find(m), e.layFixLeft = d.find(x), e.layFixRight = d.find(b), e.layTool = d.find(g), a.height) {
			var c = parseFloat(a.height) - parseFloat(e.layHeader.height()) - 1;
			a.page && (c -= parseFloat(e.layTool.outerHeight() + 1)), e.layBody.css("height", c)
		}
		e.pullData(1), e.events()
	}, j.prototype.reload = function(e) {
		var i = this;
		i.config = t.extend({}, i.config, e), i.render()
	}, j.prototype.pullData = function(e, i) {
		var a = this,
			n = a.config;
		if (n.url) t.ajax({
				type : n.method || "get",
				url : n.url,
				data : t.extend({
					page : e,
					limit : n.limit
				}, n.where),
				dataType : "json",
				success : function(t) {
					return 0 != t.code ? l.msg(t.msg) : (a.renderData(t, e, t.count), i && l.close(i), void ("function" == typeof n.done && n.done(t, e, t.count)))
				},
				error : function(e, t) {
					l.msg("数据请求异常"), d.error("初始table时的接口" + n.url + "异常：" + t), i && l.close(i)
				}
			});
		else if (n.data && n.data.constructor === Array) {
			var c = e * n.limit - n.limit,
				r = {
					data : n.data.concat().splice(c, n.limit),
					count : n.data.length
				};
			a.renderData(r, e, n.data.length), "function" == typeof n.done && n.done(r, e, r.count)
		}
	}, j.prototype.page = 1, j.prototype.eachCols = function(e) {
		layui.each(this.config.cols, function(t, i) {
			layui.each(i, function(a, l) {
				e(a, l, [ t, i ])
			})
		})
	}, j.prototype.renderData = function(e, l, d, c) {
		var o = this,
			s = e.data,
			u = o.config,
			f = [],
			h = [],
			y = [],
			p = function() {
				return !c && o.sortKey ? o.sort(o.sortKey.field, o.sortKey.sort, !0) : (layui.each(s, function(e, a) {
					var l = [],
						n = [],
						d = [];
					o.eachCols(function(e, c) {
						var o = a[c.field || e];
						if (void 0 !== o && null !== o || (o = ""), !(c.colspan > 1)) {
							var s = [ '<td data-field="' + (c.field || e) + '"' + function() {
								var e = [];
								return c.edit && e.push(' data-edit="true"'), c.align && e.push(' align="' + c.align + '"'), c.templet && e.push(' data-content="' + o + '"'), c.toolbar && e.push(' data-off="true"'), c.event && e.push(' lay-event="' + c.event + '"'), c.style && e.push(' style="' + c.style + '"'), e.join("")
							}() + ">", '<div class="layui-table-cell laytable-cell-' + function() {
								return c.checkbox ? "checkbox" : c.space ? "space" : u.index + "-" + (c.field || e)
							}() + '">' + function() {
								return c.checkbox ? '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" ' + function() {
									var e = r.config.checkName;
									return c[e] ? (a[e] = c[e], c[e] ? "checked" : "") : a[e] ? "checked" : ""
								}() + ">" : c.toolbar ? i(t(c.toolbar).html() || "").render(a) : c.templet ? i(t(c.templet).html() || String(o)).render(a) : o
							}(), "</div></td>" ].join("");
							l.push(s), c.fixed && "right" !== c.fixed && n.push(s), "right" === c.fixed && d.push(s)
						}
					}), f.push('<tr data-index="' + e + '">' + l.join("") + "</tr>"), h.push('<tr data-index="' + e + '">' + n.join("") + "</tr>"), y.push('<tr data-index="' + e + '">' + d.join("") + "</tr>")
				}), o.layBody.scrollTop(0), o.layMain.find("tbody").html(f.join("")), o.layFixLeft.find("tbody").html(h.join("")), o.layFixRight.find("tbody").html(y.join("")), n.render("checkbox", "LAY-table-" + o.index), o.syncCheckAll(), o.haveInit ? o.scrollPatch() : setTimeout(function() {
					o.scrollPatch()
				}, 50), void (o.haveInit = !0))
			};
		return o.key = u.id || u.index, r.cache[o.key] = s, c ? p() : (o.cacheData = s, 0 === s.length ? o.layMain.html('<div class="layui-none">无数据</div>') : (p(), void (u.page && (o.page = l, o.count = d, a.render({
				elem : "layui-table-page" + u.index,
				count : d,
				groups : 3,
				limits : u.limits || [ 10, 20, 30, 40, 50, 60, 70, 80, 90 ],
				limit : u.limit,
				curr : l,
				layout : [ "prev", "page", "next", "skip", "count", "limit" ],
				prev : '<i class="layui-icon">&#xe603;</i>',
				next : '<i class="layui-icon">&#xe602;</i>',
				jump : function(e, t) {
					t || (o.page = e.curr, u.limit = e.limit, o.pullData(e.curr, o.loading()))
				}
			}), o.layTool.find(".layui-table-count span").html(d)))))
	}, j.prototype.sort = function(e, i, a) {
		var n,
			c = this,
			o = c.config,
			s = r.cache[c.key];
		"string" == typeof e && c.layHeader.find("th").each(function(i, a) {
			var l = t(this),
				d = l.data("field");
			if (d === e) return e = l, n = d, !1
		});try {
			var n = n || e.data("field");
			if (c.sortKey && !a && n === c.sortKey.field && i === c.sortKey.sort) return;
			var u = c.layHeader.find("th .laytable-cell-" + o.index + "-" + n).find(k);
			c.layHeader.find("th").find(k).removeAttr("lay-sort"), u.attr("lay-sort", i || null), c.layFixed.find("th")
		} catch (f) {
			return d.error("未到匹配field")
		} c.sortKey = {
			field : n,
			sort : i
		}, "asc" === i ? s = layui.sort(s, n) : "desc" === i ? s = layui.sort(s, n, !0) : (s = c.cacheData,
		delete c.sortKey
		), c.renderData({
			data : s
		}, c.page, c.count, !0), l.close(c.tipsIndex)
	}, j.prototype.loading = function() {
		var e = this,
			t = e.config;
		if (t.loading && t.url) return l.msg("数据请求中", {
				icon : 16,
				offset : [ e.layTool.offset().top - 100 - D.scrollTop() + "px", e.layTool.offset().left + e.layTool.width() / 2 - 90 - D.scrollLeft() + "px" ],
				anim : -1,
				fixed : !1
			})
	}, j.prototype.setCheckData = function(e, t) {
		var i = this,
			a = i.config,
			l = r.cache[i.key];
		l[e] && (l[e][a.checkName] = t, i.cacheData[e][a.checkName] = t)
	}, j.prototype.syncCheckAll = function() {
		var e = this,
			t = e.config,
			i = e.layHeader.find('input[name="layTableCheckbox"]'),
			a = function(i) {
				return e.eachCols(function(e, a) {
						a.checkbox && (a[t.checkName] = i)
					}), i
			};
		i[0] && (r.checkStatus(e.key).isAll ? (i[0].checked || (i.prop("checked", !0), n.render("checkbox", "LAY-table-" + e.index)), a(!0)) : (i[0].checked && (i.prop("checked", !1), n.render("checkbox", "LAY-table-" + e.index)), a(!1)))
	}, j.prototype.getCssRule = function(e, t) {
		var i = this,
			a = i.elem.find("style")[0],
			l = a.sheet || a.styleSheet,
			n = l.cssRules || l.rules;
		layui.each(n, function(a, l) {
			if (l.selectorText === ".laytable-cell-" + i.index + "-" + e) return t(l), !0
		})
	}, j.prototype.scrollPatch = function() {
		var e = this,
			i = e.layMain.width() - e.layMain.prop("clientWidth"),
			a = e.layMain.height() - e.layMain.prop("clientHeight");
		if (i && a) {
			if (!e.elem.find(".layui-table-patch")[0]) {
				var l = t('<th class="layui-table-patch"><div class="layui-table-cell"></div></th>');
				l.find("div").css({
					width : i
				}), e.layHeader.eq(0).find("thead tr").append(l)
			}
		} else e.layHeader.eq(0).find(".layui-table-patch").remove();
		e.layFixed.find(p).css("height", e.layMain.height() - a), e.layFixRight[a ? "removeClass" : "addClass"](f), e.layFixRight.css("right", i - 1)
	}, j.prototype.events = function() {
		var e,
			a = this,
			d = a.config,
			o = t("body"),
			u = {},
			f = a.layHeader.find("th"),
			h = ".layui-table-cell",
			y = d.elem.attr("lay-filter");
		f.on("mousemove", function(e) {
			var i = t(this),
				a = i.offset().left,
				l = e.clientX - a;
			i.attr("colspan") > 1 || i.attr("unresize") || u.resizeStart || (u.allowResize = i.width() - l <= 10, o.css("cursor", u.allowResize ? "col-resize" : ""))
		}).on("mouseleave", function() {
			t(this);u.resizeStart || o.css("cursor", "")
		}).on("mousedown", function(e) {
			if (u.allowResize) {
				var i = t(this).data("field");
				e.preventDefault(), u.resizeStart = !0, u.offset = [ e.clientX, e.clientY ], a.getCssRule(i, function(e) {
					u.rule = e, u.ruleWidth = parseFloat(e.style.width)
				})
			}
		}), F.on("mousemove", function(t) {
			if (u.resizeStart) {
				if (t.preventDefault(), u.rule) {
					var i = u.ruleWidth + t.clientX - u.offset[0];
					u.rule.style.width = i + "px", l.close(a.tipsIndex)
				}
				e = 1
			}
		}).on("mouseup", function(t) {
			u.resizeStart && (u = {}, o.css("cursor", ""), a.scrollPatch()), 2 === e && (e = null)
		}), f.on("click", function() {
			var i,
				l = t(this),
				n = l.find(k),
				d = n.attr("lay-sort");
			return n[0] && 1 !== e ? (i = "asc" === d ? "desc" : "desc" === d ? null : "asc", void a.sort(l, i)) : e = 2
		}).find(k + " .layui-edge ").on("click", function(e) {
			var i = t(this),
				l = i.index(),
				n = i.parents("th").eq(0).data("field");
			layui.stope(e), 0 === l ? a.sort(n, "asc") : a.sort(n, "desc")
		}), a.elem.on("click", 'input[name="layTableCheckbox"]+', function() {
			var e = t(this).prev(),
				i = a.layBody.find('input[name="layTableCheckbox"]'),
				l = e.parents("tr").eq(0).data("index"),
				d = e[0].checked,
				c = "layTableAllChoose" === e.attr("lay-filter");
			c ? (i.each(function(e, t) {
				t.checked = d, a.setCheckData(e, d)
			}), a.syncCheckAll(), n.render("checkbox", "LAY-table-" + a.index)) : (a.setCheckData(l, d), a.syncCheckAll()), layui.event.call(this, s, "checkbox(" + y + ")", {
				checked : d,
				data : r.cache[a.key][l],
				type : c ? "all" : "one"
			})
		}), a.layBody.on("mouseenter", "tr", function() {
			var e = t(this),
				i = e.index();
			a.layBody.find("tr:eq(" + i + ")").addClass(w)
		}).on("mouseleave", "tr", function() {
			var e = t(this),
				i = e.index();
			a.layBody.find("tr:eq(" + i + ")").removeClass(w)
		}), a.layBody.on("change", "." + C, function() {
			var e = t(this),
				i = this.value,
				l = e.parent().data("field"),
				n = e.parents("tr").eq(0).data("index");
			layui.event.call(this, s, "edit(" + y + ")", {
				value : i,
				data : r.cache[a.key][n],
				field : l
			})
		}).on("blur", "." + C, function() {
			var e,
				l = t(this),
				n = l.parent().data("field"),
				d = l.parents("tr").eq(0).data("index"),
				c = r.cache[a.key][d];
			a.eachCols(function(t, i) {
				i.field == n && i.templet && (e = i.templet)
			}), l.siblings(h).html(e ? i(t(e).html() || this.value).render(c) : this.value), l.parent().data("content", this.value), l.remove()
		}), a.layBody.on("click", "td", function() {
			var e = t(this),
				i = (e.data("field"), e.children(h));
			if (!e.data("off")) {
				if (e.data("edit")) {
					var n = t('<input class="' + C + '">');
					return n[0].value = e.data("content") || i.text(), e.find("." + C)[0] || e.append(n), n.focus()
				}
				i.prop("scrollWidth") > i.outerWidth() && (a.tipsIndex = l.tips([ '<div class="layui-table-tips-main" style="margin-top: -' + (i.height() + 16) + "px;" + function() {
					return "sm" === d.size ? "padding: 4px 15px; font-size: 12px;" : "lg" === d.size ? "padding: 14px 15px;" : ""
				}() + '">', i.html(), "</div>", '<i class="layui-icon layui-table-tips-c">&#x1006;</i>' ].join(""), i[0], {
					tips : [ 3, "" ],
					time : -1,
					anim : -1,
					maxWidth : c.ios || c.android ? 300 : 600,
					isOutAnim : !1,
					skin : "layui-table-tips",
					success : function(e, t) {
						e.find(".layui-table-tips-c").on("click", function() {
							l.close(t)
						})
					}
				}))
			}
		}), a.layBody.on("click", "*[lay-event]", function() {
			var e = t(this),
				l = e.parents("tr").eq(0).data("index"),
				n = a.layBody.find('tr[data-index="' + l + '"]'),
				d = "layui-table-click";
			layui.event.call(this, s, "tool(" + y + ")", {
				data : r.cache[a.key][l],
				event : e.attr("lay-event"),
				tr : n,
				del : function() {
					var e = this.data;
					delete e[r.config.checkName]
					, n.remove(), a.scrollPatch()
				},
				update : function(e) {
					var l = this.data;
					e = e || {}, layui.each(e, function(e, d) {
						if (e in l) {
							var c;
							l[e] = d, a.eachCols(function(t, i) {
								i.field == e && i.templet && (c = i.templet)
							}), n.children('td[data-field="' + e + '"]').children(h).html(c ? i(t(c).html() || d).render(l) : d)
						}
					})
				}
			}), n.addClass(d).siblings("tr").removeClass(d)
		}), a.layMain.on("scroll", function() {
			var e = t(this),
				i = e.scrollLeft(),
				n = e.scrollTop();
			a.layHeader.scrollLeft(i), a.layFixed.find(p).scrollTop(n), l.close(a.tipsIndex)
		}), D.on("resize", function() {
			a.scrollPatch()
		})
	}, r.init = function(e, i) {
		i = i || {};
		var a = this,
			l = t(e ? 'table[lay-filter="' + e + '"]' : u + "[lay-data]");
		return l.each(function() {
				var a = t(this),
					l = a.attr("lay-data");
				try {
					l = new Function("return " + l)()
				} catch (n) {
					d.error("table元素属性lay-data配置项存在语法错误：" + l)
				}
				var c = [],
					o = t.extend({
						elem : this,
						cols : [],
						data : [],
						skin : a.attr("lay-skin"),
						size : a.attr("lay-size"),
						even : "string" == typeof a.attr("lay-even")
					}, r.config, i, l);
				e && a.hide(), a.find("thead>tr").each(function(e) {
					o.cols[e] = [], t(this).children().each(function(i) {
						var a = t(this),
							l = a.attr("lay-data");
						try {
							l = new Function("return " + l)()
						} catch (n) {
							return d.error("table元素属性lay-data配置项存在语法错误：" + l)
						}
						var r = t.extend({
							title : a.text(),
							colspan : a.attr("colspan"),
							rowspan : a.attr("rowspan")
						}, l);
						c.push(r), o.cols[e].push(r)
					})
				}), a.find("tbody>tr").each(function(e) {
					var i = t(this),
						a = {};
					i.children("td").each(function(e, i) {
						var l = t(this),
							n = l.data("field");
						if (n) return a[n] = l.html()
					}), layui.each(c, function(e, t) {
						var l = i.children("td").eq(e);
						a[t.field] = l.html()
					}), o.data[e] = a
				}), r.render(o)
			}), a
	}, r.checkStatus = function(e) {
		var t = 0,
			i = [],
			a = r.cache[e];
		return a ? (layui.each(a, function(e, a) {
			a[r.config.checkName] && (t++, i.push(a))
		}), {
			data : i,
			isAll : t === a.length
		}) : {}
	}, r.render = function(e) {
		var t = new j(e);
		return o.call(t)
	}, r.init(), e(s, r)
});